<?php
class BoletasController extends AppController 
{
	var $name = 'Boletas';
	var $layout =  "ajax";
	var $components = array('Interfaz', 'Vista', 'Listas','Listas');
	var $helpers = array('Interfaz','Vista','Ayuda');
	var $uses = array('Boleta','Productor','Usuario','Subsidio');
	
	public function beforeFilter(){
  		$this->validar();
  	}
  	
 	function index()
	{
 	}
 	

 	public function listado_boletas($busq=null, $filtro = false) {
 		$busq = (strpos($busq, 'menuadmin') === false) ? $busq : null; 	
 		$this->permisos_menu_individual('ordenes');
 		if(!empty($this->request->data) && $filtro){
			
			$this->set('opciones',$this->serializador($this->request->data,2));
 			extract($this->request->data);
 			$condiciones = array();
 			$condiciones['Boleta.id >']=0;
			if(!empty($$fecha_i))
			{
				$vfi=$this->Utilitario->guar_fecha($$fecha_i);		
				if(empty($$fecha_f)){ $vff=$vfi; }
				else if(!empty($$fecha_f)){ $vff=$this->Utilitario->guar_fecha($$fecha_f);}
				if($this->diferencias_dias($vfi,$vff)<0){
					$a=$vfi;
				 	$vfi=$vff;
					$vff=$a;
				}
				$condiciones['Boleta.fecha BETWEEN ? AND ?']=array($vfi,$vff);
			}
			if(!empty($rubro_id) && $rubro_id>0 ){ $condiciones['Boleta.rubro_id']=$rubro_id;}
			if(!empty($silo_id) && $silo_id>0 ){ $condiciones['Boleta.silo_id']=$silo_id;}
			if(!empty($nro_boleta) ){ $condiciones['Boleta.nro_boleta']=$nro_boleta; $busq=$nro_boleta;}
			if(!empty($nro_orden) ){ $condiciones['Boleta.nro_orden']=$nro_orden; $busq=$nro_orden;}
			if(!empty($cedrif) ){ $condiciones['Productor.ced_rif ilike ']="%$cedrif%"; $busq=$cedrif;}
			if(!empty($nombre) ){ $condiciones['Productor.nombre ilike ']="%$nombre%"; $busq=$nombre;}
			if(!empty($estatus) ){ if($estatus<0) $estatus=0;$condiciones['Boleta.estatus']=$estatus;}
			$tipo=2;
 		} else {
 			$condiciones = array();
 			$condiciones['Boleta.id >']=0;
 			$tipo=1;
 		}
 		$total=$this->Boleta->find('count',array('conditions'=> $condiciones));
		$data=$this->Boleta->find('all',array('conditions'=> $condiciones,'limit'=>MAX_PAGI));
		if($total>MAX_PAGI) $mos=MAX_PAGI;
		else $mos=$total;
		if($mos>0 && $filtro ) $this->Vista->cerrar_ventana($vent_filtro);
		$this->set('data',$data); $this->set('busq',$busq); $this->set('tipo',$tipo);
		$this->Vista->title('Listado de Ordenes sin Factura (Mostrando '.$mos.' de '.$total.' Registros Encontrados)');
	}

	public function nuevo() 
	{	
		$this->permisos_accion_individual('ordenes','nuevo');
		$this->set('lista_silos',$this->Listas->lista_silo());
		$this->set('lista_rubro',$this->Listas->lista_rubro());
	}

	public function dato_productor($cedrif=null){
		if(isset($cedrif)){
			$cedrif=$this->Interfaz->cedula_formateada($this->Utilitario->mayuscula($cedrif));
			$d=$this->Productor->find('first',array('conditions'=> array("Productor.ced_rif"=>$cedrif)));
			if(isset($d['Productor']['id']) && $d['Productor']['id'] > 0){
				
				echo "<script type='text/javascript'>
					document.getElementById('productor_id').value='".$d['Productor']['id']."';
					document.getElementById('cedrif').value='".$this->Interfaz->cedulaguion($d['Productor']['ced_rif'])."';
					document.getElementById('nombres').value='".$d['Productor']['nombre']."';
					
				</script>";
			}
			else{
				echo "<script type='text/javascript'>
					document.getElementById('productor_id').value='0';
					document.getElementById('nombres').value='';
				</script>";
				$this->Vista->mensaje("La cedula Ingresada no existe",'EXITO');
			}
		}
		$this->render("../".PRINCIPAL."/mensajes");
	}

	public function guardar(){
		extract($this->request->data);
		if(isset($id)) $this->permisos_opcion_individual('ordenes','estatus','modificar');
		else $this->permisos_accion_individual('ordenes','nuevo');
		if(!$this->Vista->empyt($this->request->data)){			
			$this->Boleta->query('BEGIN WORK');
			if(isset($id)){
				$dPro['Boleta']['id']=$this->Interfaz->id($id);
				
			} else {
				$dPro['Boleta']['usuario_id']=$this->Interfaz->id($this->Session->read('usuario_id'));
				$dPro['Boleta']['productor_id']=$productor_id;
			}
                        $nro_boleta = $this->Interfaz->mayuscula($nro_boleta);
                        $boletaDuplicada = $this->Boleta->find('first', array('fields' => 'id', 'conditions' => array('nro_boleta' => $nro_boleta)));
                        if(empty($boletaDuplicada)) {
                            $dPro['Boleta']['rubro_id']=$rubro_id;
                            $dPro['Boleta']['nro_boleta']=$nro_boleta;
                            $dPro['Boleta']['nro_orden']=$this->Interfaz->mayuscula($nro_orden);
                            $dPro['Boleta']['fecha']=$this->Utilitario->guar_fecha($$fecha);			
                            $dPro['Boleta']['monto']=$this->Interfaz->miles_postgres($monto);
                            $dPro['Boleta']['kilos']=$this->Interfaz->miles_postgres($kilos);
                            if($this->Boleta->save($dPro)){
                                    $this->Boleta->query('COMMIT');				
                                    $this->log();
                                    if(isset($id)) $msj = "Orden de Compra sin Factura Modificada Exitosamente!!!";
                                    else $msj = "Orden de Compra sin Factura Guardada Exitosamente!!!";
                                    $this->Vista->mensaje($msj);
                                    $this->Vista->cerrar_ventana($vent_nuevo);
                            }
                            else{
                                    $this->Vista->mensaje("Ocurrio un error Guardando deuda",'ERROR');
                                    $this->Deuda->query('ROLLBACK');	
                            }
                        } else {
                            $this->Vista->mensaje("Nro de Boleta Duplicado",'ERROR');
                            $this->render("../".PRINCIPAL."/mensajes");
                        }
                            
		}
		$this->listado_boletas($nombres,false);
		$this->render('listado_boletas');
	}

	public function boletas_filtro() {
		$this->permisos_accion_individual('ordenes','filtro');
		$this->set('lista_silos',$this->Listas->lista_silo());
		$this->set('lista_rubro',$this->Listas->lista_rubro());
		$estatus=array(1=>'SIN FACTURAR',2=>'ANULADA',3=>'FACTURADA');
		$this->set('lista_estatus',$estatus);
	}

	public function ver_datos($ver=1,$id=null)
	{
		if($ver==1) $this->permisos_opcion_individual('ordenes','estatus','ver');
		else $this->permisos_opcion_individual('ordenes','estatus','modificar');
		$id=$this->Interfaz->id($id);
		if(is_numeric($id)){
			$data= $this->Boleta->find('first', array('conditions'=>array('Boleta.id'=> $id)));
			$this->set('data',$data);$this->set('ver',$ver);				
			$this->set('lista_silos',$this->Listas->lista_silo());
			$this->set('lista_rubro',$this->Listas->lista_rubro());
		}
		else{
			$tnis->vista->mensaje("estas tratando de violar la seguridad de agropatria","ERROR");
			$this->render("../".PRINCIPAL."/mensajes");
		}
	}

	public function anular($id=null)
	{
		$this->permisos_opcion_individual('ordenes','estatus','anular');
		if(isset($id)) {
			$id=$this->Interfaz->id($id);
			if(is_numeric($id)){
				$data['Boleta']['id']=$id;
				$data['Boleta']['estatus']=2;
                                $data['Boleta']['nro_boleta'] = 'ANU' . time();
				if($this->Boleta->save($data)){
					$this->log();
					$this->Vista->mensaje("Orden de Compra sin Factura Anulada Exitosamente",'Exito');
				} else {
					$this->Vista->mensaje("Ocurrio un error Anulando Orde de Compra",'ERROR');
				}
			} else {
				$tnis->vista->mensaje("estas tratando de violar la seguridad de agropatria","ERROR");
				$this->render("../".PRINCIPAL."/mensajes");
			}
		}
		$this->listado_boletas();
		$this->render('listado_boletas');
	}

	public function buscar_monto_subsidio($id_r=null,$kilos=0) {
		if(isset($id_r) && $id_r>0){
			$kilos = $this->Interfaz->miles_postgres($kilos);
			$data= $this->Subsidio->Find('first',array('conditions'=> array("Subsidio.rubro_id"=>$id_r,"Subsidio.estatus"=>1)));
			$monto = $kilos * $data['Subsidio']['precio'];
			echo $this->Interfaz->miles($data['Subsidio']['precio'])." Bs. x Kg";	
		}
		else{
			$monto="0.00";
		}
		$monto=$this->Interfaz->miles($monto);
		echo "<script type='text/javascript'>
					document.getElementById('monto').value='$monto';
			  </script>";
		$this->render("../".PRINCIPAL."/mensajes");
	}


	public function reporte_excel_boletas($tipo,$busq=null){
		$busq = (strpos($busq, 'menuadmin') === false) ? $busq : null; 
		if(empty($busq)){
			$data = $this->Boleta->find('all',array('conditions'=> array("Boleta.id >"=>'0'),'limit'=>2000));
		} else {
			$data = $this->_principal_buscador_reporte('Boleta',$busq);
		}
		$this->set('busq',$busq);
		$this->set('tipo',$tipo);
		$this->set('data',$data);
		$this->render('reporte_excel_filtrado_boletas');
		
	}

	public function reporte_excel_filtrado_boletas($tipo,$opciones) 
	{
		$this->set('tipo',$tipo);
		$data=$this->serializador($opciones,1); //1 convierte la cadena serializada en un arreglo
		if(is_array($data))
		{
			extract($data);
 			$condiciones = array();
 			$condiciones['Boleta.id >']=0;
 			$this->set('opciones',$this->serializador($this->request->data,2));
			if(!empty($$fecha_i))
			{
				$vfi=$this->Utilitario->guar_fecha($$fecha_i);		
				if(empty($$fecha_f)){ $vff=$vfi; }
				else if(!empty($$fecha_f)){ $vff=$this->Utilitario->guar_fecha($$fecha_f);}
				if($this->diferencias_dias($vfi,$vff)<0){
					$a=$vfi;
				 	$vfi=$vff;
					$vff=$a;
				}
				$condiciones['Boleta.fecha BETWEEN ? AND ?']=array($vfi,$vff);
			}
			if(!empty($rubro_id) && $rubro_id>0 ){ $condiciones['Boleta.rubro_id']=$rubro_id;}
			if(!empty($silo_id) && $silo_id>0 ){ $condiciones['Boleta.silo_id']=$silo_id;}
			if(!empty($nro_boleta) ){ $condiciones['Boleta.nro_boleta']=$nro_boleta; $busq=$nro_boleta;}
			if(!empty($nro_orden) ){ $condiciones['Boleta.nro_orden']=$nro_orden; $busq=$nro_orden;}
			if(!empty($cedrif) ){ $condiciones['Productor.ced_rif ilike ']="%$cedrif%"; $busq=$cedrif;}
			if(!empty($nombre) ){ $condiciones['Productor.nombre ilike ']="%$nombre%"; $busq=$nombre;}
			if(!empty($estatus) ){ if($estatus<0) $estatus=0;$condiciones['Boleta.estatus']=$estatus;}
			$data=$this->Boleta->find('all',array('conditions'=> $condiciones));
			$this->set('data',$data);
		}
		else
		{
			echo "ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA";
		}
	}

}